package com.marklogic.client.modulesloader.impl; import java.io.IOException; import java.util.List; import org.junit.Assert; import org.junit.Test; import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.Resource; import com.marklogic.client.admin.MethodType; import com.marklogic.client.admin.ResourceExtensionsManager.MethodParameters; import com.marklogic.client.modulesloader.ExtensionMetadataAndParams; public class XmlExtensionMetadataProviderTest extends Assert { @Test public void test() throws IOException { DefaultExtensionMetadataProvider p = new DefaultExtensionMetadataProvider(); Resource resource = new ClassPathResource("sample-base-dir/services/sample.xqy"); ExtensionMetadataAndParams emap = p.provideExtensionMetadataAndParams(resource); assertEquals("Sample Service", emap.metadata.getTitle()); assertEquals("<p>You can use <b>HTML</b> in this or any other XML that you like.</p>", emap.metadata.getDescription()); List<MethodParameters> methods = emap.methods; assertEquals(3, methods.size()); MethodParameters method = methods.get(1); assertEquals(MethodType.POST, method.getMethod()); assertEquals(2, method.size()); assertEquals("xs:string is the default when no type param is provided", "xs:string", method.get("sourceId") .get(0)); assertEquals("xs:boolean", method.get("edit").get(0)); } @Test public void missingMetadata() throws Exception { DefaultExtensionMetadataProvider p = new DefaultExtensionMetadataProvider(); Resource resource = new ClassPathResource("sample-base-dir/services/another-sample.xq"); ExtensionMetadataAndParams emap = p.provideExtensionMetadataAndParams(resource); assertEquals("Title should default to the filename minus the extension", "another-sample", emap.metadata.getTitle()); } }